home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / TOS_SRC / CONTROL.STE / CONTROL.S < prev    next >
Encoding:
Text File  |  2001-02-10  |  8.2 KB  |  360 lines

  1. ;
  2. ;    ACCSTART.S    4/30/85            MIKE SCHMAL
  3. ;
  4. ;    DESK ACCESSORY STARTUP PROGRAM
  5. ;
  6. ; This version only contains what is necessary for a desk accessory to run
  7. ; All other garbage has been removed as not to waste memory.
  8. ;
  9. ;    Revised 3/14/88 - RMS
  10. ;    1/12/89 for mixers.   RZ
  11. ;
  12.  
  13.     .text
  14.  
  15.     .globl  _donoise
  16.     .globl    _crystal
  17.     .globl    _ctrl_cnts
  18.     .globl    _gemdos
  19.     .globl    _set_state
  20.     .globl    _val_slider
  21.     .globl    _xbios
  22. ;
  23. ;    SYSTEM CONSTANTS
  24. ;
  25. conterm    =    $0484
  26. ucr    =    $FFFA29
  27. tddr    =    $FFFA25
  28. tdcr    =    $FFFA1D
  29.  
  30. ;
  31. ;  Must be first object file in link statement
  32. ;
  33. _start:
  34.  
  35.     move.l    #ustk,a7    ; get program stack
  36.     jsr    _main        ; go to program
  37.     move.l    #0,(a7)        ; back to gemdos
  38.     trap    #1
  39. ;
  40. ; necessary for the binds to work, everyone gets one
  41. ;
  42.  
  43. _crystal:
  44.     move.l    4(a7),d1
  45.     move.w    #200,d0
  46.     trap    #2
  47.     rts
  48. ;
  49. ;    trap14    Taken straight from the hitchhikers guide
  50. ;
  51.  
  52. _xbios:
  53.     move.l    (sp)+,saveret    ; pop return address
  54.     trap    #14
  55.     move.l    saveret,-(sp)    ; restore return address
  56.     rts
  57. ;
  58. ;    trap1    Virtually identical to trap14
  59. ;
  60. _gemdos:
  61.     move.l    (sp)+,saveret    ; pop return address
  62.     trap    #1
  63.     move.l    saveret,-(sp)    ; restore return address
  64.     rts
  65.  
  66.  
  67. ;
  68. ;
  69. ;    Added 3/3/89               R.Z.
  70. ;
  71. ;
  72. ;    VAL_SLIDER  Display a Color-Mix Slider value
  73. ;
  74. ;    val_slider(value,string)
  75. ;        Insert ASCII equivalent of value into string
  76. ;        NOTE: value must be less than 100
  77. ;
  78.  
  79. _val_slider:
  80.     move.l    6(sp),a0    ; a0 = String ptr
  81.     moveq    #0,d0
  82.     move    4(sp),d0    ; d0 = Hex value
  83.     divu    #10,d0
  84.     beq    .noten
  85.     add.b    #'0',d0        ; Ten's place
  86.     move.b    d0,(a0)+
  87. .noten:    swap    d0
  88.     add.b    #'0',d0
  89.     move.b    d0,(a0)+    ; One's place
  90.     move.b    #0,(a0)+
  91.     rts
  92.  
  93.  
  94. ; ==================================================
  95. ;      SET STATE OF RS232 PORT
  96. ; ==================================================
  97.  
  98. _set_state:
  99.     move.w    #$ffff,-(sp)    ; scr
  100.     move.w    #$ffff,-(sp)    ; tsr
  101.     move.w    #$ffff,-(sp)    ; rsc
  102.     move.w    #$ffff,-(sp)    ; ucr
  103. ;
  104.     lea    _rsave,a0    ; flow control
  105.     move.b    4(a0),d0
  106.     ext.w    d0
  107.     move.w    d0,-(sp)    ; flow control to stack
  108. ;
  109.     clr.w    d0
  110.     move.b    1(a0),d0    ; baud rate
  111.     lea    _remap2,a1
  112.     move.b    (a1,d0.w),d0
  113.     ext.w    d0
  114.     move.w    d0,-(sp)    ; baud rate to stack
  115.     move.w    #15,-(sp)
  116.     trap    #14
  117.     adda.w    #$e,sp        ; clean up the stack    
  118.  
  119.     bsr    super        ; into supervisor
  120.  
  121.     clr.w    d0
  122.     lea    _rsave,a0    ; flow control
  123.     move.b    1(a0),d0    ; get baud rate
  124.     cmp.b    #14,d0        ; This code is necessary in order to fix
  125.     blt    no_bugfix    ; the bug in the 11/20/85 release of the roms.
  126.     movea.l    #tdcr,a0    ; Timer d+c control reg
  127.     move.b    (a0),d1        ; involving baud rates of 50 and 75.
  128.     and.b    #$f0,d1        ; mask out old value
  129.     or.b    #$02,d1        ; or in new value
  130.     move.b    d1,(a0)        ; stuff it in
  131.     movea.l    #tddr,a0    ; a0 ->timer d data reg
  132.     cmp.w    #14,d0
  133.     bne    do_50
  134.     move.b    #102,(a0)    ; set new data value for 75 baud
  135.     bra    no_bugfix
  136. do_50:
  137.     move.b    #154,(a0)    ; set new data value for 50 baud
  138. no_bugfix:
  139.     movea.l    #ucr,a0
  140.     move.b    (a0),d0        ; get ucr byte
  141.     lea    _rsave,a0
  142.     moveq    #0,d1
  143.     move.b    3(a0),d1    ; bits/char
  144.     asl.b    #5,d1
  145.     and.b    #$99,d0        ; clear bits 1,2,5,6
  146.     or.b    d1,d0
  147.     moveq    #0,d1
  148.     move.b    2(a0),d1    ; parity
  149.     bne    prty1
  150.     bclr    #2,d0        ; disable parity
  151.     bra    prtyout
  152. prty1:
  153.     bset    #2,d0        ; enable parity
  154.     bclr    #1,d0        ; clear odd/even
  155.     cmp.b    #2,d1
  156.     bne    prtyout        ; since bit=0 odd parity
  157.     bset    #1,d0        ; select even parity
  158. prtyout:
  159.     move.b    d0,ucr        ; store new state
  160.     bsr unsuper
  161.     rts
  162.  
  163. ; =================================================
  164. ; GET INTO SUPERVISOR MODE
  165. ; =================================================
  166.  
  167. super:
  168.     clr.l    -(sp)
  169.     move.w    #$20,-(sp)
  170.     trap    #1        ; enter supervisor mode
  171.     addq.l    #6,sp
  172.     move.l    d0,savessp
  173.     rts
  174.  
  175. ; =================================================
  176. ; GET OUT OF SUPERVISOR MODE
  177. ; =================================================
  178.  
  179. unsuper:
  180.     move.l    savessp,-(sp)
  181.     move.w    #$20,-(sp)
  182.     trap    #1            ; return to user mode
  183.     addq.l    #6,sp
  184.     rts
  185.  
  186.  
  187. ;
  188. ;    DONOISE    Set console noise bits
  189. ;
  190. ;    param 0 = click on/off (word)
  191. ;    param 1 = bell on/off (word)
  192. ;
  193. _donoise:
  194.     clr.l    -(sp)
  195.     move.w    #$20,-(sp)
  196.     trap    #1        ; enter supervisor mode
  197.     addq.l    #6,sp
  198.     move.l    d0,savessp    ; save old ssp
  199.  
  200.     move.w    4(sp),d0
  201.     lsl.w    #2,d0
  202.     or.w    6(sp),d0
  203.     and.b    #$0fa,conterm
  204.     or.b    d0,conterm    ; set new bell and click values
  205.  
  206.     move.l    savessp,-(sp)    ; restore old ssp
  207.     move.w    #$20,-(sp)
  208.     trap    #1        ; exit supervisor mode
  209.     addq.l    #6,sp
  210.     rts
  211.  
  212. ;
  213. ;    Constant Data
  214. ;
  215.     .data
  216.         .even
  217. _ctrl_cnts:                 ;    Application Manager
  218.     .dc.b    0, 1, 0            ; func 010        
  219.           .dc.b    2, 1, 1            ; func 011        
  220.            .dc.b    2, 1, 1         ; func 012        
  221.     .dc.b    0, 1, 1            ; func 013        
  222.     .dc.b    2, 1, 1            ; func 014        
  223.     .dc.b    1, 1, 1            ; func 015        
  224.     .dc.b    0, 0, 0            ; func 016        
  225.     .dc.b    0, 0, 0            ; func 017        
  226.     .dc.b    0, 0, 0            ; func 008        
  227.     .dc.b    0, 1, 0            ; func 019        
  228. ;                             Event Manager
  229.     .dc.b    0, 1, 0            ; func 020        
  230.     .dc.b    3, 5, 0            ; func 021        
  231.     .dc.b    5, 5, 0            ; func 022        
  232.     .dc.b    0, 1, 1            ; func 023        
  233.     .dc.b    2, 1, 0            ; func 024        
  234.     .dc.b    16, 7, 1         ; func 025        
  235.     .dc.b    2, 1, 0            ; func 026        
  236.     .dc.b    0, 0, 0            ; func 027        
  237.     .dc.b    0, 0, 0            ; func 028        
  238.     .dc.b    0, 0, 0            ; func 009        
  239. ;                             Menu Manager
  240.     .dc.b    1, 1, 1            ; func 030        
  241.     .dc.b    2, 1, 1            ; func 031        
  242.     .dc.b    2, 1, 1            ; func 032        
  243.     .dc.b    2, 1, 1            ; func 033        
  244.     .dc.b    1, 1, 2            ; func 034        
  245.     .dc.b    1, 1, 1            ; func 005        
  246.     .dc.b    0, 0, 0            ; func 006        
  247.     .dc.b    0, 0, 0            ; func 007        
  248.     .dc.b    0, 0, 0            ; func 008        
  249.     .dc.b    0, 0, 0            ; func 009        
  250. ;                             Object Manager
  251.     .dc.b    2, 1, 1            ; func 040        
  252.     .dc.b    1, 1, 1            ; func 041        
  253.       .dc.b    6, 1, 1            ; func 042        
  254.     .dc.b    4, 1, 1            ; func 043        
  255.     .dc.b    1, 3, 1            ; func 044        
  256.     .dc.b    2, 1, 1            ; func 045        
  257.     .dc.b    4, 2, 1            ; func 046        
  258.     .dc.b    8, 1, 1            ; func 047        
  259.     .dc.b    0, 0, 0            ; func 048        
  260.     .dc.b    0, 0, 0            ; func 049        
  261. ;                             Form Manager
  262.     .dc.b    1, 1, 1            ; func 050        
  263.     .dc.b    9, 1, 1            ; func 051        
  264.     .dc.b    1, 1, 1            ; func 002        
  265.     .dc.b    1, 1, 0            ; func 003        
  266.     .dc.b    0, 5, 1            ; func 004        
  267.     .dc.b    0, 0, 0            ; func 005        
  268.     .dc.b    0, 0, 0            ; func 006        
  269.     .dc.b    0, 0, 0            ; func 007        
  270.     .dc.b    0, 0, 0            ; func 008        
  271.     .dc.b    0, 0, 0            ; func 009        
  272. ;                             Dialog Manager
  273.     .dc.b    0, 0, 0            ; func 060        
  274.     .dc.b    0, 0, 0            ; func 061        
  275.     .dc.b    0, 0, 0            ; func 062        
  276.     .dc.b    0, 0, 0            ; func 003        
  277.     .dc.b    0, 0, 0            ; func 004        
  278.     .dc.b    0, 0, 0            ; func 005        
  279.     .dc.b    0, 0, 0            ; func 006        
  280.     .dc.b    0, 0, 0            ; func 007        
  281.     .dc.b    0, 0, 0            ; func 008        
  282.     .dc.b    0, 0, 0            ; func 009        
  283. ;                            Graphics Manager
  284.     .dc.b    4, 3, 0            ; func 070        
  285.     .dc.b    8, 3, 0            ; func 071        
  286.     .dc.b    6, 1, 0            ; func 072        
  287.     .dc.b    8, 1, 0            ; func 073        
  288.     .dc.b    8, 1, 0            ; func 074        
  289.     .dc.b    4, 1, 1            ; func 075        
  290.     .dc.b    3, 1, 1            ; func 076        
  291.     .dc.b    0, 5, 0            ; func 077        
  292.     .dc.b    1, 1, 1            ; func 078        
  293.     .dc.b    0, 5, 0            ; func 009        
  294. ;                            Scrap Manager
  295.     .dc.b    0, 1, 1            ; func 080        
  296.     .dc.b    0, 1, 1            ; func 081        
  297.     .dc.b    0, 0, 0            ; func 082        
  298.     .dc.b    0, 0, 0            ; func 083        
  299.     .dc.b    0, 0, 0            ; func 084        
  300.     .dc.b    0, 0, 0            ; func 005        
  301.     .dc.b    0, 0, 0            ; func 006        
  302.     .dc.b    0, 0, 0            ; func 007        
  303.     .dc.b    0, 0, 0            ; func 008        
  304.     .dc.b    0, 0, 0            ; func 009        
  305. ;                            fseler Manager
  306.     .dc.b    0, 2, 2            ; func 090        
  307.     .dc.b    0, 0, 0            ; func 091        
  308.     .dc.b    0, 0, 0            ; func 092        
  309.     .dc.b    0, 0, 0            ; func 003        
  310.     .dc.b    0, 0, 0            ; func 004        
  311.     .dc.b    0, 0, 0            ; func 005        
  312.     .dc.b    0, 0, 0            ; func 006        
  313.     .dc.b    0, 0, 0            ; func 007        
  314.     .dc.b    0, 0, 0            ; func 008        
  315.     .dc.b    0, 0, 0         ; func 009        
  316. ;                            Window Manager
  317.     .dc.b    5, 1, 0            ; func 100        
  318.     .dc.b    5, 1, 0            ; func 101        
  319.     .dc.b    1, 1, 0            ; func 102        
  320.     .dc.b    1, 1, 0            ; func 103        
  321.     .dc.b    2, 5, 0            ; func 104        
  322.     .dc.b    6, 1, 0            ; func 105        
  323.     .dc.b    2, 1, 0            ; func 106        
  324.     .dc.b    1, 1, 0            ; func 107        
  325.     .dc.b    6, 5, 0            ; func 108        
  326.     .dc.b    0, 0, 0         ; func 009        
  327. ;                            Resource Manger
  328.     .dc.b    0, 1, 1            ; func 110        
  329.     .dc.b    0, 1, 0            ; func 111        
  330.     .dc.b    2, 1, 0            ; func 112        
  331.     .dc.b    2, 1, 1            ; func 113        
  332.     .dc.b    1, 1, 1            ; func 114        
  333.     .dc.b    0, 0, 0            ; func 115        
  334.     .dc.b    0, 0, 0            ; func 006        
  335.     .dc.b    0, 0, 0            ; func 007        
  336.     .dc.b    0, 0, 0            ; func 008        
  337.     .dc.b    0, 0, 0            ; func 009        
  338. ;                            Shell Manager
  339.     .dc.b    0, 1, 2            ; func 120        
  340.     .dc.b    3, 1, 2            ; func 121        
  341.     .dc.b    1, 1, 1            ; func 122        
  342.     .dc.b    1, 1, 1            ; func 123        
  343.     .dc.b    0, 1, 1            ; func 124        
  344.     .dc.b    0, 1, 2            ; func 125        
  345.  
  346. ;
  347. ;    Random Store
  348. ;
  349.     .bss
  350.     .even
  351. saveret:
  352.     .ds.l    1
  353.     .ds.l    256
  354. ustk:    
  355.     .ds.l    1
  356. savessp:
  357.     .ds.l    1
  358.  
  359.     .end
  360.